package com.example.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.domain.entity.Type;
import com.example.exception.FloraException;
import com.example.service.TypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/type")
public class TypeController {
    @Autowired
    private TypeService typeService;

    /** 后台查询文章类型（查询所有（禁用的+未禁用的）） */
    @GetMapping("getTypePage")
    public IPage<Type> getTypePage(
            @RequestParam(required = false) String name,
            @RequestParam(required = false,defaultValue = "0") Integer pageNum,
            @RequestParam(required = false,defaultValue = "5") Integer pageSize
    ){
        return typeService.getTypePage(name,pageNum,pageSize);
    }

    /** 前台查询文章分类（未禁用的），返回list即可
     * 感觉前台可以在选择文章分类时设计一个其他选项，来看分类已被禁用或删除的文章 */
    @GetMapping("getTypeList")
    public List<Type> getTypeList(){
        return typeService.getTypeList();
    }

    /** 添加文章分类 */
    @PostMapping("")
    public Type addType(@RequestBody Type type) throws FloraException {
        return typeService.addType(type);
    }

    /** 修改文章分类
     * 两种情况：1.修改名字、描述等  2.禁用/解除禁用（因为禁用还要对文章表操作） */
    @PutMapping("")
    public void updateType(@RequestBody Type type,@RequestParam int flag) throws FloraException {
        if(flag==1) {
            typeService.updateTypeCommon(type);
        }
        else{
            typeService.updateTypeStatus(type);
        }
    }

    /** 删除文章分类，将所有这类文章的分类id设为0 */
    @DeleteMapping("/{id}")
    public void deleteType(@PathVariable Long id) throws FloraException {
        typeService.deleteType(id);
    }
}
